/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package manejadores;

import entidades.Constribucion;
import interfaz.Entidad;
import interfaz.Manejador;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import persistencia.Conexion;

/**
 *
 * @author Snailin
 */
public class ManejadorDeConstribucion implements Manejador {

      private Conexion conexion=null;
    private static ManejadorDeConstribucion instancia=null;
    private ResultSet rs=null;
    private PreparedStatement stmt=null;
    private ArrayList<Constribucion>constribuciones=null;

    public static ManejadorDeConstribucion getInstancia() {
        if(instancia==null){
            instancia=new ManejadorDeConstribucion();
        }
        return instancia;
    }

    private ManejadorDeConstribucion(){
        conexion=Conexion.getInstancia();
    }

    public ArrayList<Constribucion>getConstribuciones(){
        constribuciones=new ArrayList<Constribucion>();
        String sql="SELECT * FROM constribucion";
        stmt=conexion.hacerEnunciado(sql);
        rs=conexion.hacerConsulta(sql);
        try {
            while (rs.next()) {
            Constribucion contribucion=new Constribucion(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getDouble(4));
            constribuciones.add(contribucion);


            }
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeConstribucion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return constribuciones;

    }



    public int agregar(Entidad constribucion) {
       int fila=0;
       String sql="INSERT INTO constribucion (id_constribucion, fondos, fuentes, cantidad)VALUES(0, ?, ?, ?);";
       stmt=conexion.hacerEnunciado(sql);
        try {
            stmt.setString(1, ((Constribucion)(constribucion)).getFondos());
            stmt.setString(2, ((Constribucion)(constribucion)).getFuentes());
            stmt.setDouble(3, ((Constribucion)(constribucion)).getCantidad());
            fila = stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeConstribucion.class.getName()).log(Level.SEVERE, null, ex);
        }
       return fila;
    }

    public int eliminar(int id) {
           int fila=0;
       String sql="DELETE FROM constribucion WHERE id_constribucion = ?";
       stmt=conexion.hacerEnunciado(sql);
        try {
            stmt.setInt(1, id);
            fila = stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeConstribucion.class.getName()).log(Level.SEVERE, null, ex);
        }
       return fila;
    }

    public int modificar(Entidad constribucion, int id) {
           int fila=0;
       String sql="UPDATE constribucion SET fondos = ? , fuentes = ? , cantidad = ? WHERE id_constribucion = ?";
       stmt=conexion.hacerEnunciado(sql);
        try {
               stmt.setString(1, ((Constribucion)(constribucion)).getFondos());
            stmt.setString(2, ((Constribucion)(constribucion)).getFuentes());
            stmt.setDouble(3, ((Constribucion)(constribucion)).getCantidad());
            stmt.setInt(1, id);
            fila = stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeConstribucion.class.getName()).log(Level.SEVERE, null, ex);
        }
       return fila;
    }

}
